package reflect.filed;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;

public class Demo2 {
    public static void main(String[] args) throws Exception {
        //获取字节码对象
        Class<Student> aClass = (Class<Student>)Class.forName("reflect.filed.Student");
        //获取成员变量（Field类的对象）
        //当被public修饰的时候
        Field id = aClass.getDeclaredField("id");
        //获取Student的无参构造方法
        Constructor<Student> constructor = aClass.getConstructor();
        //通过反射创建Student对象
        Object stu = constructor.newInstance();
        //通过获取到的成员变量（Field类的对象）调用set方法进行赋值
        //name.set（要赋值类的对象，要赋值的成员变量值）;
        id.set(stu,23);
        //通过Field类的对象调用get方法可以返回指定的对象的值
        Object value = id.get(stu);
        System.out.println(value);
        System.out.println("..............................................");
        //访问私有时
        Field name = aClass.getDeclaredField("name");
        name.setAccessible(true);
        name.set(stu,"于飞正");
        Object o = name.get(stu);
        System.out.println(o);
    }
}
